package com.zb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.entity.ZjWorkStatementTemplateModule;
import com.zb.extend.WorkStatementTemplateModuleExtend;
import com.zb.vo.OrderStatementTemplateVo;
import com.zb.vo.TemplateModuleVo;

import java.util.List;

/**
 * <p>
 * 工单结单模板模块关联表 服务类
 * </p>
 *
 * @author WEN
 * @since 2023-10-07
 */
public interface ZjWorkStatementTemplateModuleService extends IService<ZjWorkStatementTemplateModule> {

    /**
     * 保存应用模块
     * @param custAccId 商家ID
     * @param workStatementTemplateId 结单模板ID
     * @param templateModuleIds
     */
    void save(Long custAccId, Long workStatementTemplateId, List<TemplateModuleVo> templateModuleIds, List<Long> delTemplateModuleIds);

    /**
     * 保存工单模块结单模板
     * @param custAccId 商家ID
     * @param moduleId 模块ID
     * @param workStatementTemplateIds 结单模板ID
     */
    void saveOrderModuleFinishTemplate(Long custAccId, Long moduleId, List<Long> workStatementTemplateIds);

    /**
     * 根据结单模板ID获取应用模块
     * @param workStatementTemplateIds 结单模板ID
     * @return
     */
    List<WorkStatementTemplateModuleExtend> getModuleByWorkStatementTemplateIds(List<Long> workStatementTemplateIds);

    /**
     * 根据结单模板ID获取应用模块
     * @param workStatementTemplateId 结单模板ID
     * @return
     */
    List<ZjWorkStatementTemplateModule> getModuleByWorkStatementTemplateId(Long workStatementTemplateId);

    /**
     * 根据结单模板ID删除
     * @param workStatementTemplateIds
     */
    void deleteBatchByWorkStatementTemplateIds(List<Long> workStatementTemplateIds);

    /**
     * 根据工单模块ID获取结单模板的应用模块
     * @param moduelId
     * @return
     */
    List<ZjWorkStatementTemplateModule> getByModuleId(Long moduelId);

    /**
     * 根据工单模块ID集合查询关联结单模板应用模块
     * @param moduleIds
     * @return
     */
    List<ZjWorkStatementTemplateModule> getByModuleIds(List<Long> moduleIds);

    /**
     * 根据模块ID获取结单模板及结单字段
     *
     * @param moduleId 模块ID
     * @return
     */
    List<OrderStatementTemplateVo> getFinishOrderTemplateFieldByModuleId(Long moduleId);

    /**
     * 根据模块ID获取结单模板
     * @param moduleId 工单模块ID
     * @return
     */
    List<Long> getWorkStatementTemplateModuleByModuleId(Long moduleId);

}
